/**
 *                                                        ____   _____
 *  Dynarch Calendar -- JSCal2, version 1.8               \  /_  /   /
 *  Built at 2010/04/11 12:26 GMT                          \  / /   /
 *                                                          \/ /_  /
 *  (c) Dynarch.com 2009                                     \  / /
 *  All rights reserved.                                       / /
 *  Visit www.dynarch.com/projects/calendar for details        \/
 *
 */
Calendar=(function(){
    function y(at){
        at=at||{};

        this.args=at=al(at,{
            animation:!c,
            cont:null,
            bottomBar:true,
            date:true,
            fdow:aq("fdow"),
            min:null,
            max:null,
            reverseWheel:false,
            selection:[],
            selectionType:y.SEL_SINGLE,
            weekNumbers:false,
            align:"Bl/ / /T/r",
            inputField:null,
            trigger:null,
            dateFormat:"%Y-%m-%d",
            opacity:j?1:3,
            titleFormat:"%b %Y",
            showTime:false,
            timePos:"right",
            time:true,
            minuteStep:5,
            disabled:ad,
            checkRange:false,
            dateInfo:ad,
            onChange:ad,
            onSelect:ad,
            onTimeChange:ad,
            onFocus:ad,
            onBlur:ad
        });
        this.handlers={};

        var P=this,D=new Date();
        at.min=Y(at.min);
        at.max=Y(at.max);
        if(at.date===true){
            at.date=D
            }
            if(at.time===true){
            at.time=D.getHours()*100+Math.floor(D.getMinutes()/at.minuteStep)*at.minuteStep
            }
            this.date=Y(at.date);
        this.time=at.time;
        this.fdow=at.fdow;
        m("onChange onSelect onTimeChange onFocus onBlur".split(/\s+/),function(av){
            var au=at[av];
            if(!(au instanceof Array)){
                au=[au]
                }
                P.handlers[av]=au
            });
        this.selection=new y.Selection(at.selection,at.selectionType,R,this);
        var ar=K.call(this);
        if(at.cont){
            W(at.cont).appendChild(ar)
            }
            if(at.trigger){
            this.manageFields(at.trigger,at.inputField,at.dateFormat)
            }
        }
    var S=navigator.userAgent,s=/opera/i.test(S),ai=/Konqueror|Safari|KHTML/i.test(S),j=/msie/i.test(S)&&!s&&!(/mac_powerpc/i.test(S)),c=j&&/msie 6/i.test(S),x=/gecko/i.test(S)&&!ai&&!s&&!j,l=y.prototype,q=y.I18N={};

    y.SEL_NONE=0;
    y.SEL_SINGLE=1;
    y.SEL_MULTIPLE=2;
    y.SEL_WEEK=3;
    y.dateToInt=V;
    y.intToDate=B;
    y.printDate=ab;
    y.formatString=k;
    y.i18n=aq;
    y.LANG=function(P,D,ar){
    q.__=q[P]={
        name:D,
        data:ar
    }
};

y.setup=function(D){
    return new y(D)
    };

l.moveTo=function(aG,aD){
    aG=Y(aG);
    var aC=af(aG,this.date,true),au,az=this.args,aH=az.min&&af(aG,az.min),aI=az.max&&af(aG,az.max);
    if(az.showTime){
        this.setHours(aG.getUTCHours());
        this.setMinutes(aG.getUTCMinutes())
        }
        if(!az.animation){
        aD=false
        }
        ae(aH!=null&&aH<=1,[this.els.navPrevMonth,this.els.navPrevYear],"DynarchCalendar-navDisabled");
    ae(aI!=null&&aI>=-1,[this.els.navNextMonth,this.els.navNextYear],"DynarchCalendar-navDisabled");
    if(aH<-1){
        aG=az.min;
        au=1;
        aC=0
        }
        if(aI>1){
        aG=az.max;
        au=2;
        aC=0
        }
        this.date=aG;
    this.refresh(!!aD);
    this.callHooks("onChange",this,aG,aD);
    if(aD&&!(aC==0&&aD==2)){
        if(this._bodyAnim){
            this._bodyAnim.stop()
            }
            var aw=this.els.body,ax=G("div","DynarchCalendar-animBody-"+U[aC],aw),aF=aw.firstChild,av=am(aF)||0.7,ay=au?Z.brakes:aC==0?Z.shake:Z.accel_ab2,aE=aC*aC>4,ar=aE?aF.offsetTop:aF.offsetLeft,aB=ax.style,aA=aE?aw.offsetHeight:aw.offsetWidth;
        if(aC<0){
            aA+=ar
            }else{
            if(aC>0){
                aA=ar-aA
                }else{
                aA=Math.round(aA/7);
                if(au==2){
                    aA=-aA
                    }
                }
        }
    if(!au&&aC!=0){
    var P=ax.cloneNode(true),D=P.style,at=2*aA;
    P.appendChild(aF.cloneNode(true));
    D[aE?"marginTop":"marginLeft"]=aA+"px";
    aw.appendChild(P)
    }
    aF.style.visibility="hidden";
ax.innerHTML=ac(this);
    this._bodyAnim=ap({
    onUpdate:v(function(aK,aM){
        var aL=ay(aK);
        if(P){
            var aJ=aM(aL,aA,at)+"px"
            }
            if(au){
            aB[aE?"marginTop":"marginLeft"]=aM(aL,aA,0)+"px"
            }else{
            if(aE||aC==0){
                aB.marginTop=aM(aC==0?ay(aK*aK):aL,0,aA)+"px";
                if(aC!=0){
                    D.marginTop=aJ
                    }
                }
            if(!aE||aC==0){
            aB.marginLeft=aM(aL,0,aA)+"px";
            if(aC!=0){
                D.marginLeft=aJ
                }
            }
    }
    if(this.args.opacity>2&&P){
    am(P,1-aL);
    am(ax,aL)
    }
},this),
onStop:v(function(aJ){
    aw.innerHTML=ac(this,aG);
    this._bodyAnim=null
    },this)
})
}
this._lastHoverDate=null;
return aH>=-1&&aI<=1
};

l.isDisabled=function(D){
    var P=this.args;
    return(P.min&&af(D,P.min)<0)||(P.max&&af(D,P.max)>0)||P.disabled(D)
    };

l.toggleMenu=function(){
    u(this,!this._menuVisible)
    };

l.refresh=function(D){
    var P=this.els;
    if(!D){
        P.body.innerHTML=ac(this)
        }
        P.title.innerHTML=F(this);
    P.yearInput.value=this.date.getFullYear()
    };

l.redraw=function(){
    var D=this.els;
    this.refresh();
    D.dayNames.innerHTML=h(this);
    D.menu.innerHTML=ak(this);
    if(D.bottomBar){
        D.bottomBar.innerHTML=H(this)
        }
        t(D.topCont,v(function(ar){
        var P=r[ar.className];
        if(P){
            D[P]=ar
            }
            if(ar.className=="DynarchCalendar-menu-year"){
            p(ar,this._focusEvents);
            D.yearInput=ar
            }else{
            if(j){
                ar.setAttribute("unselectable","on")
                }
            }
    },this));
this.setTime(null,true)
};

l.setLanguage=function(D){
    var P=y.setLanguage(D);
    if(P){
        this.fdow=P.data.fdow;
        this.redraw()
        }
    };

y.setLanguage=function(D){
    var P=q[D];
    if(P){
        q.__=P
        }
        return P
    };

l.focus=function(){
    try{
        this.els[this._menuVisible?"yearInput":"focusLink"].focus()
        }catch(D){}
    i.call(this)
    };

l.blur=function(){
    this.els.focusLink.blur();
    this.els.yearInput.blur();
    z.call(this)
    };

l.showAt=function(P,ax,av){
    if(this._showAnim){
        this._showAnim.stop()
        }
        av=av&&this.args.animation;
    var aw=this.els.topCont,ar=this,D=this.els.body.firstChild,au=D.offsetHeight,at=aw.style;
    at.position="absolute";
    at.left=P+"px";
    at.top=ax+"px";
    at.zIndex=10000;
    at.display="";
    if(av){
        D.style.marginTop=-au+"px";
        this.args.opacity>1&&am(aw,0);
        this._showAnim=ap({
            onUpdate:function(ay,az){
                D.style.marginTop=-az(Z.accel_b(ay),au,0)+"px";
                ar.args.opacity>1&&am(aw,ay)
                },
            onStop:function(){
                ar.args.opacity>1&&am(aw,"");
                ar._showAnim=null
                }
            })
    }
};

l.hide=function(){
    var at=this.els.topCont,P=this,D=this.els.body.firstChild,ar=D.offsetHeight,au=J(at).y;
    if(this.args.animation){
        if(this._showAnim){
            this._showAnim.stop()
            }
            this._showAnim=ap({
            onUpdate:function(av,aw){
                P.args.opacity>1&&am(at,1-av);
                D.style.marginTop=-aw(Z.accel_b(av),0,ar)+"px";
                at.style.top=aw(Z.accel_ab(av),au,au-10)+"px"
                },
            onStop:function(){
                at.style.display="none";
                D.style.marginTop="";
                P.args.opacity>1&&am(at,"");
                P._showAnim=null
                }
            })
    }else{
    at.style.display="none"
    }
    this.inputField=null
};

l.popup=function(D,at){
    D=W(D);
    if(!at){
        at=this.args.align
        }
        at=at.split(/\x2f/);
    var ar=J(D),aw=this.els.topCont,ay=aw.style,au,ax=X();
    ay.visibility="hidden";
    ay.display="";
    this.showAt(0,0);
    document.body.appendChild(aw);
    au={
        x:aw.offsetWidth,
        y:aw.offsetHeight
        };

    function P(az){
        var aA={
            x:av.x,
            y:av.y
            };

        if(!az){
            return aA
            }
            if(/B/.test(az)){
            aA.y+=D.offsetHeight
            }
            if(/b/.test(az)){
            aA.y+=D.offsetHeight-au.y
            }
            if(/T/.test(az)){
            aA.y-=au.y
            }
            if(/l/.test(az)){
            aA.x-=au.x-D.offsetWidth
            }
            if(/L/.test(az)){
            aA.x-=au.x
            }
            if(/R/.test(az)){
            aA.x+=D.offsetWidth
            }
            if(/c/i.test(az)){
            aA.x+=(D.offsetWidth-au.x)/2
            }
            if(/m/i.test(az)){
            aA.y+=(D.offsetHeight-au.y)/2
            }
            return aA
        }
        var av=ar;
    av=P(at[0]);
    if(av.y<ax.y){
        av.y=ar.y;
        av=P(at[1])
        }
        if(av.x+au.x>ax.x+ax.w){
        av.x=ar.x;
        av=P(at[2])
        }
        if(av.y+au.y>ax.y+ax.h){
        av.y=ar.y;
        av=P(at[3])
        }
        if(av.x<ax.x){
        av.x=ar.x;
        av=P(at[4])
        }
        this.showAt(av.x,av.y,true);
    ay.visibility="";
    this.focus()
    };

l.manageFields=function(ar,P,D){
    P=W(P);
    p(W(ar),"click",v(function(){
        this.inputField=P;
        this.dateFormat=D;
        if(this.selection.type==y.SEL_SINGLE){
            var aw,av,au,at;
            aw=/input|textarea/i.test(P.tagName)?P.value:(P.innerText||P.textContent);
            if(aw){
                av=/(^|[^%])%[bBmo]/.exec(D);
                au=/(^|[^%])%[de]/.exec(D);
                if(av&&au){
                    at=av.index<au.index
                    }
                    aw=Calendar.parseDate(aw,at);
                if(aw){
                    this.selection.set(aw,false,true);
                    this.moveTo(aw)
                    }
                }
        }
    this.popup(ar)
        },this))
};

l.callHooks=function(ar){
    var at=b(arguments,1),D=this.handlers[ar],P=0;
    for(;P<D.length;++P){
        D[P].apply(this,at)
        }
    };

l.addEventListener=function(P,D){
    this.handlers[P].push(D)
    };

l.removeEventListener=function(at,ar){
    var D=this.handlers[at],P=D.length;
    while(--P>=0){
        if(D[P]===ar){
            D.splice(P,1)
            }
        }
};

l.getTime=function(){
    return this.time
    };

l.setTime=function(au,P){
    if(this.args.showTime){
        au=this.time=au!=null?au:this.time;
        var ar=this.getHours(),D=this.getMinutes(),at=ar<12;
        if(this.args.showTime==12){
            if(ar==0){
                ar=12
                }
                if(ar>12){
                ar-=12
                }
                this.els.timeAM.innerHTML=aq(at?"AM":"PM")
            }
            if(ar<10){
            ar="0"+ar
            }
            if(D<10){
            D="0"+D
            }
            this.els.timeHour.innerHTML=ar;
        this.els.timeMinute.innerHTML=D;
        if(!P){
            this.callHooks("onTimeChange",this,au)
            }
        }
};

l.getHours=function(){
    return Math.floor(this.time/100)
    };

l.getMinutes=function(){
    return this.time%100
    };

l.setHours=function(D){
    if(D<0){
        D+=24
        }
        this.setTime(100*(D%24)+this.time%100)
    };

l.setMinutes=function(D){
    if(D<0){
        D+=60
        }
        this.setTime(100*this.getHours()+(D%60))
    };

l._getInputYear=function(){
    var D=parseInt(this.els.yearInput.value,10);
    if(isNaN(D)){
        D=this.date.getFullYear()
        }
        return D
    };

l._showTooltip=function(D){
    var P="",at,ar=this.els.tooltip;
    if(D){
        D=B(D);
        at=this.args.dateInfo(D);
        if(at&&at.tooltip){
            P="<div class='DynarchCalendar-tooltipCont'>"+ab(D,at.tooltip)+"</div>"
            }
        }
    ar.innerHTML=P
};

var ah=" align='center' cellspacing='0' cellpadding='0'";
function h(D){
    var ar=["<table",ah,"><tr>"],P=0;
    if(D.args.weekNumbers){
        ar.push("<td><div class='DynarchCalendar-weekNumber'>",aq("wk"),"</div></td>")
        }while(P<7){
        var at=(P+++D.fdow)%7;
        ar.push("<td><div",aq("weekend").indexOf(at)>=0?" class='DynarchCalendar-weekend'>":">",aq("sdn")[at],"</div></td>")
        }
        ar.push("</tr></table>");
    return ar.join("")
    }
    function ac(aw,aG,aD){
    aG=aG||aw.date;
    aD=aD||aw.fdow;
    aG=new Date(aG.getFullYear(),aG.getMonth(),aG.getDate(),12,0,0,0);
    var aI=aG.getMonth(),av=[],aA=0,D=aw.args.weekNumbers;
    aG.setDate(1);
    var az=(aG.getDay()-aD)%7;
    if(az<0){
        az+=7
        }
        aG.setDate(-az);
    aG.setDate(aG.getDate()+1);
    var aE=new Date(),at=aE.getDate(),P=aE.getMonth(),aJ=aE.getFullYear();
    av[aA++]="<table class='DynarchCalendar-bodyTable'"+ah+">";
    for(var aC=0;aC<6;++aC){
        av[aA++]="<tr class='DynarchCalendar-week";
        if(aC==0){
            av[aA++]=" DynarchCalendar-first-row"
            }
            if(aC==5){
            av[aA++]=" DynarchCalendar-last-row"
            }
            av[aA++]="'>";
        if(D){
            av[aA++]="<td class='DynarchCalendar-first-col'><div class='DynarchCalendar-weekNumber'>"+a(aG)+"</div></td>"
            }
            for(var aB=0;aB<7;++aB){
            var aF=aG.getDate(),ay=aG.getMonth(),au=aG.getFullYear(),ar=10000*au+100*(ay+1)+aF,aH=aw.selection.isSelected(ar),ax=aw.isDisabled(aG);
            av[aA++]="<td class='";
            if(aB==0&&!D){
                av[aA++]=" DynarchCalendar-first-col"
                }
                if(aB==0&&aC==0){
                aw._firstDateVisible=ar
                }
                if(aB==6){
                av[aA++]=" DynarchCalendar-last-col";
                if(aC==5){
                    aw._lastDateVisible=ar
                    }
                }
            if(aH){
            av[aA++]=" DynarchCalendar-td-selected"
            }
            av[aA++]="'><div dyc-type='date' unselectable='on' dyc-date='"+ar+"' ";
        if(ax){
            av[aA++]="disabled='1' "
            }
            av[aA++]="class='DynarchCalendar-day";
        if(aq("weekend").indexOf(aG.getDay())>=0){
            av[aA++]=" DynarchCalendar-weekend"
            }
            if(ay!=aI){
            av[aA++]=" DynarchCalendar-day-othermonth"
            }
            if(aF==at&&ay==P&&au==aJ){
            av[aA++]=" DynarchCalendar-day-today"
            }
            if(ax){
            av[aA++]=" DynarchCalendar-day-disabled"
            }
            if(aH){
            av[aA++]=" DynarchCalendar-day-selected"
            }
            ax=aw.args.dateInfo(aG);
            if(ax&&ax.klass){
            av[aA++]=" "+ax.klass
            }
            av[aA++]="'>"+aF+"</div></td>";
        aG=new Date(au,ay,aF+1,12,0,0,0)
            }
            av[aA++]="</tr>"
    }
    av[aA++]="</table>";
return av.join("")
}
function n(D){
    var P=["<table class='DynarchCalendar-topCont'",ah,"><tr><td><div class='DynarchCalendar'>",!j?"<button class='DynarchCalendar-focusLink'></button>":"<a class='DynarchCalendar-focusLink' href='#'></a>","<div class='DynarchCalendar-topBar'><div dyc-type='nav' dyc-btn='-Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevYear'><div></div></div><div dyc-type='nav' dyc-btn='+Y' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextYear'><div></div></div><div dyc-type='nav' dyc-btn='-M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-prevMonth'><div></div></div><div dyc-type='nav' dyc-btn='+M' dyc-cls='hover-navBtn,pressed-navBtn' class='DynarchCalendar-navBtn DynarchCalendar-nextMonth'><div></div></div><table class='DynarchCalendar-titleCont'",ah,"><tr><td><div dyc-type='title' dyc-btn='menu' dyc-cls='hover-title,pressed-title' class='DynarchCalendar-title'>",F(D),"</div></td></tr></table><div class='DynarchCalendar-dayNames'>",h(D),"</div></div><div class='DynarchCalendar-body'></div>"];
    if(D.args.bottomBar||D.args.showTime){
        P.push("<div class='DynarchCalendar-bottomBar'>",H(D),"</div>")
        }
        P.push("<div class='DynarchCalendar-menu' style='display: none'>",ak(D),"</div><div class='DynarchCalendar-tooltip'></div></div></td></tr></table>");
    return P.join("")
    }
    function F(D){
    return"<div unselectable='on'>"+ab(D.date,D.args.titleFormat)+"</div>"
    }
    function ak(P){
    var au=["<table height='100%'",ah,"><tr><td><table style='margin-top: 1.5em'",ah,"><tr><td colspan='3'><input dyc-btn='year' class='DynarchCalendar-menu-year' size='6' value='",P.date.getFullYear(),"' /></td></tr><tr><td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='today'>",aq("goToday"),"</div></td></tr></table><p class='DynarchCalendar-menu-sep'>&nbsp;</p><table class='DynarchCalendar-menu-mtable'",ah,">"],av=aq("smn"),at=0,D=au.length,ar;
    while(at<12){
        au[D++]="<tr>";
        for(ar=4;--ar>0;){
            au[D++]="<td><div dyc-type='menubtn' dyc-cls='hover-navBtn,pressed-navBtn' dyc-btn='m"+at+"' class='DynarchCalendar-menu-month'>"+av[at++]+"</div></td>"
            }
            au[D++]="</tr>"
        }
        au[D++]="</table></td></tr></table>";
    return au.join("")
    }
    function w(D,P){
    P.push("<table class='DynarchCalendar-time'"+ah+"><tr><td rowspan='2'><div dyc-type='time-hour' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-hour'></div></td><td dyc-type='time-hour+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td><td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div dyc-type='time-min' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-minute'></div></td><td dyc-type='time-min+' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-up'></td>");
    if(D.args.showTime==12){
        P.push("<td rowspan='2' class='DynarchCalendar-time-sep'></td><td rowspan='2'><div class='DynarchCalendar-time-am' dyc-type='time-am' dyc-cls='hover-time,pressed-time'></div></td>")
        }
        P.push("</tr><tr><td dyc-type='time-hour-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td><td dyc-type='time-min-' dyc-cls='hover-time,pressed-time' class='DynarchCalendar-time-down'></td></tr></table>")
    }
    function H(D){
    var ar=[],P=D.args;
    ar.push("<table",ah," style='width:100%'><tr>");
    function at(){
        if(P.showTime){
            ar.push("<td>");
            w(D,ar);
            ar.push("</td>")
            }
        }
    if(P.timePos=="left"){
    at()
    }
    if(P.bottomBar){
    ar.push("<td>");
    ar.push("<table",ah,"><tr><td><div dyc-btn='today' dyc-cls='hover-bottomBar-today,pressed-bottomBar-today' dyc-type='bottomBar-today' class='DynarchCalendar-bottomBar-today'>",aq("today"),"</div></td></tr></table>");
    ar.push("</td>")
    }
    if(P.timePos=="right"){
    at()
    }
    ar.push("</tr></table>");
return ar.join("")
}
var r={
    "DynarchCalendar-topCont":"topCont",
    "DynarchCalendar-focusLink":"focusLink",
    DynarchCalendar:"main",
    "DynarchCalendar-topBar":"topBar",
    "DynarchCalendar-title":"title",
    "DynarchCalendar-dayNames":"dayNames",
    "DynarchCalendar-body":"body",
    "DynarchCalendar-menu":"menu",
    "DynarchCalendar-menu-year":"yearInput",
    "DynarchCalendar-bottomBar":"bottomBar",
    "DynarchCalendar-tooltip":"tooltip",
    "DynarchCalendar-time-hour":"timeHour",
    "DynarchCalendar-time-minute":"timeMinute",
    "DynarchCalendar-time-am":"timeAM",
    "DynarchCalendar-navBtn DynarchCalendar-prevYear":"navPrevYear",
    "DynarchCalendar-navBtn DynarchCalendar-nextYear":"navNextYear",
    "DynarchCalendar-navBtn DynarchCalendar-prevMonth":"navPrevMonth",
    "DynarchCalendar-navBtn DynarchCalendar-nextMonth":"navNextMonth"
};

function K(){
    var ar=G("div"),P=this.els={},D={
        mousedown:v(I,this,true),
        mouseup:v(I,this,false),
        mouseover:v(T,this,true),
        mouseout:v(T,this,false),
        keypress:v(L,this)
        };

    D[x?"DOMMouseScroll":"mousewheel"]=v(E,this);
    if(j){
        D.dblclick=D.mousedown;
        D.keydown=D.keypress
        }
        ar.innerHTML=n(this);
    t(ar.firstChild,function(au){
        var at=r[au.className];
        if(at){
            P[at]=au
            }
            if(j){
            au.setAttribute("unselectable","on")
            }
        });
p(P.main,D);
p([P.focusLink,P.yearInput],this._focusEvents={
    focus:v(i,this),
    blur:v(e,this)
    });
this.moveTo(this.date,false);
this.setTime(null,true);
return P.topCont
}
function i(){
    if(this._bluringTimeout){
        clearTimeout(this._bluringTimeout)
        }
        this.focused=true;
    M(this.els.main,"DynarchCalendar-focused");
    this.callHooks("onFocus",this)
    }
    function z(){
    this.focused=false;
    aj(this.els.main,"DynarchCalendar-focused");
    if(this._menuVisible){
        u(this,false)
        }
        if(!this.args.cont){
        this.hide()
        }
        this.callHooks("onBlur",this)
    }
    function e(){
    this._bluringTimeout=setTimeout(v(z,this),50)
    }
    function N(D){
    switch(D){
        case"time-hour+":
            this.setHours(this.getHours()+1);
            break;
        case"time-hour-":
            this.setHours(this.getHours()-1);
            break;
        case"time-min+":
            this.setMinutes(this.getMinutes()+this.args.minuteStep);
            break;
        case"time-min-":
            this.setMinutes(this.getMinutes()-this.args.minuteStep);
            break;
        default:
            return
            }
        }
var U={
    "-3":"backYear",
    "-2":"back",
    "0":"now",
    "2":"fwd",
    "3":"fwdYear"
};

function aa(P,at,D){
    if(this._bodyAnim){
        this._bodyAnim.stop()
        }
        var ar;
    if(at!=0){
        ar=new Date(P.date);
        ar.setDate(1);
        switch(at){
            case"-Y":case -2:
                ar.setFullYear(ar.getFullYear()-1);
                break;
            case"+Y":case 2:
                ar.setFullYear(ar.getFullYear()+1);
                break;
            case"-M":case -1:
                ar.setMonth(ar.getMonth()-1);
                break;
            case"+M":case 1:
                ar.setMonth(ar.getMonth()+1);
                break
                }
            }else{
    ar=new Date()
    }
    return P.moveTo(ar,!D)
}
function u(ar,P){
    ar._menuVisible=P;
    ae(P,ar.els.title,"DynarchCalendar-pressed-title");
    var at=ar.els.menu;
    if(c){
        at.style.height=ar.els.main.offsetHeight+"px"
        }
        if(!ar.args.animation){
        O(at,P);
        if(ar.focused){
            ar.focus()
            }
        }else{
    if(ar._menuAnim){
        ar._menuAnim.stop()
        }
        var D=ar.els.main.offsetHeight;
    if(c){
        at.style.width=ar.els.topBar.offsetWidth+"px"
        }
        if(P){
        at.firstChild.style.marginTop=-D+"px";
        ar.args.opacity>0&&am(at,0);
        O(at,true)
        }
        ar._menuAnim=ap({
        onUpdate:function(au,av){
            at.firstChild.style.marginTop=av(Z.accel_b(au),-D,0,!P)+"px";
            ar.args.opacity>0&&am(at,av(Z.accel_b(au),0,0.85,!P))
            },
        onStop:function(){
            ar.args.opacity>0&&am(at,0.85);
            at.firstChild.style.marginTop="";
            ar._menuAnim=null;
            if(!P){
                O(at,false);
                if(ar.focused){
                    ar.focus()
                    }
                }
        }
    })
}
}
function I(az,ay){
    ay=ay||window.event;
    var au=o(ay);
    if(au&&!au.getAttribute("disabled")){
        var D=au.getAttribute("dyc-btn"),ax=au.getAttribute("dyc-type"),av=au.getAttribute("dyc-date"),at=this.selection,ar,P={
            mouseover:an,
            mousemove:an,
            mouseup:function(aC){
                var aB=au.getAttribute("dyc-cls");
                if(aB){
                    aj(au,ao(aB,1))
                    }
                    clearTimeout(ar);
                d(document,P,true);
                P=null
                }
            };

    if(az){
        setTimeout(v(this.focus,this),1);
        var aA=au.getAttribute("dyc-cls");
        if(aA){
            M(au,ao(aA,1))
            }
            if("menu"==D){
            this.toggleMenu()
            }else{
            if(au&&/^[+-][MY]$/.test(D)){
                if(aa(this,D)){
                    var aw=v(function(){
                        if(aa(this,D,true)){
                            ar=setTimeout(aw,40)
                            }else{
                            P.mouseup();
                            aa(this,D)
                            }
                        },this);
                ar=setTimeout(aw,350);
                p(document,P,true)
                }else{
                P.mouseup()
                }
            }else{
        if("year"==D){
            this.els.yearInput.focus();
            this.els.yearInput.select()
            }else{
            if(ax=="time-am"){
                p(document,P,true)
                }else{
                if(/^time/.test(ax)){
                    var aw=v(function(aB){
                        N.call(this,aB);
                        ar=setTimeout(aw,100)
                        },this,ax);
                    N.call(this,ax);
                    ar=setTimeout(aw,350);
                    p(document,P,true)
                    }else{
                    if(av&&at.type){
                        if(at.type==y.SEL_MULTIPLE){
                            if(ay.shiftKey&&this._selRangeStart){
                                at.selectRange(this._selRangeStart,av)
                                }else{
                                if(!ay.ctrlKey&&!at.isSelected(av)){
                                    at.clear(true)
                                    }
                                    at.set(av,true);
                                this._selRangeStart=av
                                }
                            }else{
                        at.set(av);
                        this.moveTo(B(av),2)
                        }
                        au=this._getDateDiv(av);
                    T.call(this,true,{
                        target:au
                    })
                    }
                    p(document,P,true)
                }
            }
    }
}
}
if(j&&P&&/dbl/i.test(ay.type)){
    P.mouseup()
    }
    if(/^(DynarchCalendar-(topBar|bottomBar|weekend|weekNumber|menu(-sep)?))?$/.test(au.className)&&!this.args.cont){
    P.mousemove=v(g,this);
    this._mouseDiff=f(ay,J(this.els.topCont));
    p(document,P,true)
    }
}else{
    if("today"==D){
        if(!this._menuVisible&&at.type==y.SEL_SINGLE){
            at.set(new Date())
            }
            this.moveTo(new Date(),true);
        u(this,false)
        }else{
        if(/^m([0-9]+)/.test(D)){
            var av=new Date(this.date);
            av.setDate(1);
            av.setMonth(RegExp.$1);
            av.setFullYear(this._getInputYear());
            this.moveTo(av,true);
            u(this,false)
            }else{
            if(ax=="time-am"){
                this.setHours(this.getHours()+12)
                }
            }
    }
}
if(!j){
    an(ay)
    }
}
}
function g(P){
    P=P||window.event;
    var D=this.els.topCont.style,ar=f(P,this._mouseDiff);
    D.left=ar.x+"px";
    D.top=ar.y+"px"
    }
    function o(P){
    var D=P.target||P.srcElement,ar=D;
    while(D&&D.getAttribute&&!D.getAttribute("dyc-type")){
        D=D.parentNode
        }
        return D.getAttribute&&D||ar
    }
    function ao(D,P){
    return"DynarchCalendar-"+D.split(/,/)[P]
    }
    function T(au,at){
    at=at||window.event;
    var ar=o(at);
    if(ar){
        var P=ar.getAttribute("dyc-type");
        if(P&&!ar.getAttribute("disabled")){
            if(!au||!this._bodyAnim||P!="date"){
                var D=ar.getAttribute("dyc-cls");
                D=D?ao(D,0):"DynarchCalendar-hover-"+P;
                if(P!="date"||this.selection.type){
                    ae(au,ar,D)
                    }
                    if(P=="date"){
                    ae(au,ar.parentNode.parentNode,"DynarchCalendar-hover-week");
                    this._showTooltip(ar.getAttribute("dyc-date"))
                    }
                    if(/^time-hour/.test(P)){
                    ae(au,this.els.timeHour,"DynarchCalendar-hover-time")
                    }
                    if(/^time-min/.test(P)){
                    ae(au,this.els.timeMinute,"DynarchCalendar-hover-time")
                    }
                    aj(this._getDateDiv(this._lastHoverDate),"DynarchCalendar-hover-date");
                this._lastHoverDate=null
                }
            }
    }
if(!au){
    this._showTooltip()
    }
}
function E(ar){
    ar=ar||window.event;
    var P=o(ar);
    if(P){
        var at=P.getAttribute("dyc-btn"),D=P.getAttribute("dyc-type"),au=ar.wheelDelta?ar.wheelDelta/120:-ar.detail/3;
        au=au<0?-1:au>0?1:0;
        if(this.args.reverseWheel){
            au=-au
            }
            if(/^(time-(hour|min))/.test(D)){
            switch(RegExp.$1){
                case"time-hour":
                    this.setHours(this.getHours()+au);
                    break;
                case"time-min":
                    this.setMinutes(this.getMinutes()+this.args.minuteStep*au);
                    break
                    }
                    an(ar)
            }else{
            if(/Y/i.test(at)){
                au*=2
                }
                aa(this,-au);
            an(ar)
            }
        }
}
function R(){
    this.refresh();
    var D=this.inputField,P=this.selection;
    if(D){
        var ar=P.print(this.dateFormat);
        (/input|textarea/i.test(D.tagName))?D.value=ar:D.innerHTML=ar
        }
        this.callHooks("onSelect",this,P)
    }
    var ag={
    37:-1,
    38:-2,
    39:1,
    40:2
},Q={
    33:-1,
    34:1
};

function L(aB){
    if(this._menuAnim){
        return
    }
    aB=aB||window.event;
    var ar=aB.target||aB.srcElement,aC=ar.getAttribute("dyc-btn"),aD=aB.keyCode,ay=aB.charCode||aD,D=ag[aD];
    if("year"==aC&&aD==13){
        var au=new Date(this.date);
        au.setDate(1);
        au.setFullYear(this._getInputYear());
        this.moveTo(au,true);
        u(this,false);
        return an(aB)
        }
        if(this._menuVisible){
        if(aD==27){
            u(this,false);
            return an(aB)
            }
        }else{
    if(!aB.ctrlKey){
        D=null
        }
        if(D==null&&!aB.ctrlKey){
        D=Q[aD]
        }
        if(aD==36){
        D=0
        }
        if(D!=null){
        aa(this,D);
        return an(aB)
        }
        ay=String.fromCharCode(ay).toLowerCase();
    var ax=this.els.yearInput,P=this.selection;
    if(ay==" "){
        u(this,true);
        this.focus();
        ax.focus();
        ax.select();
        return an(aB)
        }
        if(ay>="0"&&ay<="9"){
        u(this,true);
        this.focus();
        ax.value=ay;
        ax.focus();
        return an(aB)
        }
        var av=aq("mn"),az=aB.shiftKey?-1:this.date.getMonth(),aw=0,at;
    while(++aw<12){
        at=av[(az+aw)%12].toLowerCase();
        if(at.indexOf(ay)==0){
            var au=new Date(this.date);
            au.setDate(1);
            au.setMonth((az+aw)%12);
            this.moveTo(au,true);
            return an(aB)
            }
        }
    if(aD>=37&&aD<=40){
    var au=this._lastHoverDate;
    if(!au&&!P.isEmpty()){
        au=aD<39?P.getFirstDate():P.getLastDate();
        if(au<this._firstDateVisible||au>this._lastDateVisible){
            au=null
            }
        }
    if(!au){
    au=aD<39?this._lastDateVisible:this._firstDateVisible
    }else{
    var aA=au;
    au=B(au);
    var az=100;
    while(az-->0){
        switch(aD){
            case 37:
                au.setDate(au.getDate()-1);
                break;
            case 38:
                au.setDate(au.getDate()-7);
                break;
            case 39:
                au.setDate(au.getDate()+1);
                break;
            case 40:
                au.setDate(au.getDate()+7);
                break
                }
                if(!this.isDisabled(au)){
            break
        }
    }
    au=V(au);
if(au<this._firstDateVisible||au>this._lastDateVisible){
    this.moveTo(au)
    }
}
aj(this._getDateDiv(aA),M(this._getDateDiv(au),"DynarchCalendar-hover-date"));
this._lastHoverDate=au;
return an(aB)
}
if(aD==13){
    if(this._lastHoverDate){
        if(P.type==y.SEL_MULTIPLE&&(aB.shiftKey||aB.ctrlKey)){
            if(aB.shiftKey&&this._selRangeStart){
                P.clear(true);
                P.selectRange(this._selRangeStart,this._lastHoverDate)
                }
                if(aB.ctrlKey){
                P.set(this._selRangeStart=this._lastHoverDate,true)
                }
            }else{
        P.reset(this._selRangeStart=this._lastHoverDate)
        }
        return an(aB)
    }
}
if(aD==27&&!this.args.cont){
    this.hide()
    }
}
}
l._getDateDiv=function(D){
    var ar=null;
    if(D){
        try{
            t(this.els.body,function(at){
                if(at.getAttribute("dyc-date")==D){
                    throw ar=at
                    }
                })
        }catch(P){}
}
return ar
};

function k(D,P){
    return D.replace(/\$\{([^:\}]+)(:[^\}]+)?\}/g,function(av,au,at){
        var aw=P[au],ar;
        if(at){
            ar=at.substr(1).split(/\s*\|\s*/);
            aw=(aw>=ar.length?ar[ar.length-1]:ar[aw]).replace(/##?/g,function(ax){
                return ax.length==2?"#":aw
                })
            }
            return aw
        })
    }
    function aq(ar,P){
    var D=q.__.data[ar];
    if(P&&typeof D=="string"){
        D=k(D,P)
        }
        return D
    }(y.Selection=function(ar,P,D,at){
    this.type=P;
    this.sel=ar instanceof Array?ar:[ar];
    this.onChange=v(D,at);
    this.cal=at
    }).prototype={
    get:function(){
        return this.type==y.SEL_SINGLE?this.sel[0]:this.sel
        },
    isEmpty:function(){
        return this.sel.length==0
        },
    set:function(P,D,ar){
        var at=this.type==y.SEL_SINGLE;
        if(P instanceof Array){
            this.sel=P;
            this.normalize();
            if(!ar){
                this.onChange(this)
                }
            }else{
        P=V(P);
        if(at||!this.isSelected(P)){
            at?this.sel=[P]:this.sel.splice(this.findInsertPos(P),0,P);
            this.normalize();
            if(!ar){
                this.onChange(this)
                }
            }else{
        if(D){
            this.unselect(P,ar)
            }
        }
}
},
reset:function(){
    this.sel=[];
    this.set.apply(this,arguments)
    },
countDays:function(){
    var av=0,D=this.sel,P=D.length,at,au,ar;
    while(--P>=0){
        at=D[P];
        if(at instanceof Array){
            au=B(at[0]);
            ar=B(at[1]);
            av+=Math.round(Math.abs(ar.getTime()-au.getTime())/86400000)
            }
            ++av
        }
        return av
    },
unselect:function(P,ar){
    P=V(P);
    var at=false;
    for(var ay=this.sel,au=ay.length,D;--au>=0;){
        D=ay[au];
        if(D instanceof Array){
            if(P>=D[0]&&P<=D[1]){
                var av=B(P),ax=av.getDate();
                if(P==D[0]){
                    av.setDate(ax+1);
                    D[0]=V(av);
                    at=true
                    }else{
                    if(P==D[1]){
                        av.setDate(ax-1);
                        D[1]=V(av);
                        at=true
                        }else{
                        var aw=new Date(av);
                        aw.setDate(ax+1);
                        av.setDate(ax-1);
                        ay.splice(au+1,0,[V(aw),D[1]]);
                        D[1]=V(av);
                        at=true
                        }
                    }
            }
    }else{
    if(P==D){
        ay.splice(au,1);
        at=true
        }
    }
}
if(at){
    this.normalize();
    if(!ar){
        this.onChange(this)
        }
    }
},
normalize:function(){
    this.sel=this.sel.sort(function(ay,ax){
        if(ay instanceof Array){
            ay=ay[0]
            }
            if(ax instanceof Array){
            ax=ax[0]
            }
            return ay-ax
        });
    for(var P=this.sel,ar=P.length,av,au;--ar>=0;){
        av=P[ar];
        if(av instanceof Array){
            if(av[0]>av[1]){
                P.splice(ar,1);
                continue
            }
            if(av[0]==av[1]){
                av=P[ar]=av[0]
                }
            }
        if(au){
        var at=au,aw=av instanceof Array?av[1]:av;
        aw=B(aw);
        aw.setDate(aw.getDate()+1);
        aw=V(aw);
        if(aw>=at){
            var D=P[ar+1];
            if(av instanceof Array&&D instanceof Array){
                av[1]=D[1];
                P.splice(ar+1,1)
                }else{
                if(av instanceof Array){
                    av[1]=au;
                    P.splice(ar+1,1)
                    }else{
                    if(D instanceof Array){
                        D[0]=av;
                        P.splice(ar,1)
                        }else{
                        P[ar]=[av,D];
                        P.splice(ar+1,1)
                        }
                    }
            }
    }
}
au=av instanceof Array?av[0]:av
}
},
findInsertPos:function(P){
    for(var D=this.sel,ar=D.length,at;--ar>=0;){
        at=D[ar];
        if(at instanceof Array){
            at=at[0]
            }
            if(at<=P){
            break
        }
    }
    return ar+1
},
clear:function(D){
    this.sel=[];
    if(!D){
        this.onChange(this)
        }
    },
selectRange:function(au,at){
    au=V(au);
    at=V(at);
    if(au>at){
        var ar=au;
        au=at;
        at=ar
        }
        var D=this.cal.args.checkRange;
    if(!D){
        return this._do_selectRange(au,at)
        }
        try{
        m(new y.Selection([[au,at]],y.SEL_MULTIPLE,ad).getDates(),v(function(av){
            if(this.isDisabled(av)){
                if(D instanceof Function){
                    D(av,this)
                    }
                    throw"OUT"
                }
            },this.cal));
    this._do_selectRange(au,at)
    }catch(P){}
},
_do_selectRange:function(P,D){
    this.sel.push([P,D]);
    this.normalize();
    this.onChange(this)
    },
isSelected:function(D){
    for(var P=this.sel.length,ar;--P>=0;){
        ar=this.sel[P];
        if(ar instanceof Array&&D>=ar[0]&&D<=ar[1]||D==ar){
            return true
            }
        }
    return false
},
getFirstDate:function(){
    var D=this.sel[0];
    if(D&&D instanceof Array){
        D=D[0]
        }
        return D
    },
getLastDate:function(){
    if(this.sel.length>0){
        var D=this.sel[this.sel.length-1];
        if(D&&D instanceof Array){
            D=D[1]
            }
            return D
        }
    },
print:function(ar,at){
    var P=[],au=0,aw,av=this.cal.getHours(),D=this.cal.getMinutes();
    if(!at){
        at=" -> "
        }while(au<this.sel.length){
        aw=this.sel[au++];
        if(aw instanceof Array){
            P.push(ab(B(aw[0],av,D),ar)+at+ab(B(aw[1],av,D),ar))
            }else{
            P.push(ab(B(aw,av,D),ar))
            }
        }
    return P
},
getDates:function(P){
    var D=[],ar=0,au,at;
    while(ar<this.sel.length){
        at=this.sel[ar++];
        if(at instanceof Array){
            au=B(at[0]);
            at=at[1];
            while(V(au)<at){
                D.push(P?ab(au,P):new Date(au));
                au.setDate(au.getDate()+1)
                }
            }else{
        au=B(at)
        }
        D.push(P?ab(au,P):au)
    }
    return D
}
};

function a(P){
    P=new Date(P.getFullYear(),P.getMonth(),P.getDate(),12,0,0);
    var ar=P.getDay();
    P.setDate(P.getDate()-(ar+6)%7+3);
    var D=P.valueOf();
    P.setMonth(0);
    P.setDate(4);
    return Math.round((D-P.valueOf())/(7*86400000))+1
    }
    function C(D){
    D=new Date(D.getFullYear(),D.getMonth(),D.getDate(),12,0,0);
    var ar=new Date(D.getFullYear(),0,1,12,0,0);
    var P=D-ar;
    return Math.floor(P/86400000)
    }
    function V(D){
    if(D instanceof Date){
        return 10000*D.getFullYear()+100*(D.getMonth()+1)+D.getDate()
        }
        if(typeof D=="string"){
        return parseInt(D,10)
        }
        return D
    }
    function B(ar,au,av,at,P){
    if(!(ar instanceof Date)){
        ar=parseInt(ar,10);
        var aw=Math.floor(ar/10000);
        ar=ar%10000;
        var D=Math.floor(ar/100);
        ar=ar%100;
        ar=new Date(aw,D-1,ar,au||12,av||0,at||0,P||0)
        }
        return ar
    }
    function af(aw,au,ar){
    var av=aw.getFullYear(),ay=aw.getMonth(),P=aw.getDate(),at=au.getFullYear(),ax=au.getMonth(),D=au.getDate();
    return av<at?-3:av>at?3:ay<ax?-2:ay>ax?2:ar?0:P<D?-1:P>D?1:0
    }
    function ab(D,ax){
    var P=D.getMonth(),aw=D.getDate(),ay=D.getFullYear(),az=a(D),aA=D.getDay(),aB=D.getHours(),ar=(aB>=12),au=(ar)?(aB-12):aB,aD=C(D),at=D.getMinutes(),av=D.getSeconds(),aC=/%./g,aE;
    if(au===0){
        au=12
        }
        aE={
        "%a":aq("sdn")[aA],
        "%A":aq("dn")[aA],
        "%b":aq("smn")[P],
        "%B":aq("mn")[P],
        "%C":1+Math.floor(ay/100),
        "%d":aw<10?"0"+aw:aw,
        "%e":aw,
        "%H":aB<10?"0"+aB:aB,
        "%I":au<10?"0"+au:au,
        "%j":aD<10?"00"+aD:aD<100?"0"+aD:aD,
        "%k":aB,
        "%l":au,
        "%m":P<9?"0"+(1+P):1+P,
        "%o":1+P,
        "%M":at<10?"0"+at:at,
        "%n":"\n",
        "%p":ar?"PM":"AM",
        "%P":ar?"pm":"am",
        "%s":Math.floor(D.getTime()/1000),
        "%S":av<10?"0"+av:av,
        "%t":"\t",
        "%U":az<10?"0"+az:az,
        "%W":az<10?"0"+az:az,
        "%V":az<10?"0"+az:az,
        "%u":aA+1,
        "%w":aA,
        "%y":(""+ay).substr(2,2),
        "%Y":ay,
        "%%":"%"
    };

    return ax.replace(aC,function(aF){
        return aE.hasOwnProperty(aF)?aE[aF]:aF
        })
    }
    function Y(P){
    if(P){
        if(typeof P=="number"){
            return B(P)
            }
            if(!(P instanceof Date)){
            var D=P.split(/-/);
            return new Date(parseInt(D[0],10),parseInt(D[1],10)-1,parseInt(D[2],10),12,0,0,0)
            }
        }
    return P
}
function A(ar){
    if(/\S/.test(ar)){
        ar=ar.toLowerCase();
        function P(at){
            for(var au=at.length;--au>=0;){
                if(at[au].toLowerCase().indexOf(ar)==0){
                    return au
                    }
                }
            }
        var D=P(aq("smn"))||P(aq("mn"));
if(D!=null){
    D++
}
return D
}
}
y.parseDate=function(au,D,aw){
    if(!/\S/.test(au)){
        return""
        }
        au=au.replace(/^\s+/,"").replace(/\s+$/,"");
    aw=aw||new Date();
    var aB=null,P=null,aD=null,av=null,ar=null,aC=null;
    var ay=au.match(/([0-9]{1,2}):([0-9]{1,2})(:[0-9]{1,2})?\s*(am|pm)?/i);
    if(ay){
        av=parseInt(ay[1],10);
        ar=parseInt(ay[2],10);
        aC=ay[3]?parseInt(ay[3].substr(1),10):0;
        au=au.substring(0,ay.index)+au.substr(ay.index+ay[0].length);
        if(ay[4]){
            if(ay[4].toLowerCase()=="pm"&&av<12){
                av+=12
                }else{
                if(ay[4].toLowerCase()=="am"&&av>=12){
                    av-=12
                    }
                }
        }
}
var az=au.split(/\W+/);
var ax=[];
for(var at=0;at<az.length;++at){
    var aA=az[at];
    if(/^[0-9]{4}$/.test(aA)){
        aB=parseInt(aA,10);
        if(!P&&!aD&&D==null){
            D=true
            }
        }else{
    if(/^[0-9]{1,2}$/.test(aA)){
        aA=parseInt(aA,10);
        if(aA>=60){
            aB=aA
            }else{
            if(aA>=0&&aA<=12){
                ax.push(aA)
                }else{
                if(aA>=1&&aA<=31){
                    aD=aA
                    }
                }
        }
}else{
    P=A(aA)
    }
}
}
if(ax.length>=2){
    if(D){
        if(!P){
            P=ax.shift()
            }
            if(!aD){
            aD=ax.shift()
            }
        }else{
    if(!aD){
        aD=ax.shift()
        }
        if(!P){
        P=ax.shift()
        }
    }
}else{
    if(ax.length==1){
        if(!aD){
            aD=ax.shift()
            }else{
            if(!P){
                P=ax.shift()
                }
            }
    }
}
if(!aB){
    aB=ax.length>0?ax.shift():aw.getFullYear()
    }
    if(aB<30){
    aB+=2000
    }else{
    if(aB<99){
        aB+=1900
        }
    }
if(!P){
    P=aw.getMonth()+1
    }
    return aB&&P&&aD?new Date(Date.UTC(aB,P-1,aD,av,ar,aC)):null
};

function al(D,at,P,ar){
    ar={};

    for(P in at){
        if(at.hasOwnProperty(P)){
            ar[P]=at[P]
            }
        }
    for(P in D){
    if(D.hasOwnProperty(P)){
        ar[P]=D[P]
        }
    }
return ar
}
function p(ar,au,at,D){
    if(ar instanceof Array){
        for(var P=ar.length;--P>=0;){
            p(ar[P],au,at,D)
            }
        }else{
    if(typeof au=="object"){
        for(var P in au){
            if(au.hasOwnProperty(P)){
                p(ar,P,au[P],at)
                }
            }
        }else{
    if(ar.addEventListener){
        ar.addEventListener(au,at,j?true:!!D)
        }else{
        if(ar.attachEvent){
            ar.attachEvent("on"+au,at)
            }else{
            ar["on"+au]=at
            }
        }
}
}
}
function d(ar,au,at,D){
    if(ar instanceof Array){
        for(var P=ar.length;--P>=0;){
            d(ar[P],au,at)
            }
        }else{
    if(typeof au=="object"){
        for(var P in au){
            if(au.hasOwnProperty(P)){
                d(ar,P,au[P],at)
                }
            }
        }else{
    if(ar.removeEventListener){
        ar.removeEventListener(au,at,j?true:!!D)
        }else{
        if(ar.detachEvent){
            ar.detachEvent("on"+au,at)
            }else{
            ar["on"+au]=null
            }
        }
}
}
}
function an(D){
    D=D||window.event;
    if(j){
        D.cancelBubble=true;
        D.returnValue=false
        }else{
        D.preventDefault();
        D.stopPropagation()
        }
        return false
    }
    function aj(au,at,av){
    if(au){
        var D=au.className.replace(/^\s+|\s+$/,"").split(/\x20/),P=[],ar;
        for(ar=D.length;ar>0;){
            if(D[--ar]!=at){
                P.push(D[ar])
                }
            }
        if(av){
        P.push(av)
        }
        au.className=P.join(" ")
    }
    return av
}
function M(P,D){
    return aj(P,D,D)
    }
    function ae(at,ar,P){
    if(ar instanceof Array){
        for(var D=ar.length;--D>=0;){
            ae(at,ar[D],P)
            }
        }else{
    aj(ar,P,at?P:null)
    }
    return at
}
function G(at,D,ar){
    var P=null;
    if(document.createElementNS){
        P=document.createElementNS("http://www.w3.org/1999/xhtml",at)
        }else{
        P=document.createElement(at)
        }
        if(D){
        P.className=D
        }
        if(ar){
        ar.appendChild(P)
        }
        return P
    }
    function b(au,av){
    if(av==null){
        av=0
        }
        var D,at,P;
    try{
        D=Array.prototype.slice.call(au,av)
        }catch(ar){
        D=new Array(au.length-av);
        for(at=av,P=0;at<au.length;++at,++P){
            D[P]=au[at]
            }
        }
        return D
}
function v(P,ar){
    var D=b(arguments,2);
    return(ar==undefined?function(){
        return P.apply(this,D.concat(b(arguments)))
        }:function(){
        return P.apply(ar,D.concat(b(arguments)))
        })
    }
    function t(P,ar){
    if(!ar(P)){
        for(var D=P.firstChild;D;D=D.nextSibling){
            if(D.nodeType==1){
                t(D,ar)
                }
            }
        }
}
function ap(D,aw,ar){
    D=al(D,{
        fps:50,
        len:15,
        onUpdate:ad,
        onStop:ad
    });
    if(j){
        D.len=Math.round(D.len/2)
        }
        function at(aA,az,ax,ay){
        return ay?ax+aA*(az-ax):az+aA*(ax-az)
        }
        function av(){
        if(aw){
            P()
            }
            ar=0;
        aw=setInterval(au,1000/D.fps)
        }
        function P(){
        if(aw){
            clearInterval(aw);
            aw=null
            }
            D.onStop(ar/D.len,at)
        }
        function au(){
        var ax=D.len;
        D.onUpdate(ar/ax,at);
        if(ar==ax){
            P()
            }
            ++ar
        }
        av();
    return{
        start:av,
        stop:P,
        update:au,
        args:D,
        map:at
    }
}
var Z={
    elastic_b:function(D){
        return 1-Math.cos(-D*5.5*Math.PI)/Math.pow(2,7*D)
        },
    magnetic:function(D){
        return 1-Math.cos(D*D*D*10.5*Math.PI)/Math.exp(4*D)
        },
    accel_b:function(D){
        D=1-D;
        return 1-D*D*D*D
        },
    accel_a:function(D){
        return D*D*D
        },
    accel_ab:function(D){
        D=1-D;
        return 1-Math.sin(D*D*Math.PI/2)
        },
    accel_ab2:function(D){
        return(D/=0.5)<1?1/2*D*D:-1/2*((--D)*(D-2)-1)
        },
    brakes:function(D){
        D=1-D;
        return 1-Math.sin(D*D*Math.PI)
        },
    shake:function(D){
        return D<0.5?-Math.cos(D*11*Math.PI)*D*D:(D=1-D,Math.cos(D*11*Math.PI)*D*D)
        }
    };

function am(D,P){
    if(P===""){
        j?D.style.filter="":D.style.opacity=""
        }else{
        if(P!=null){
            j?D.style.filter="alpha(opacity="+P*100+")":D.style.opacity=P
            }else{
            if(!j){
                P=parseFloat(D.style.opacity)
                }else{
                if(/alpha\(opacity=([0-9.])+\)/.test(D.style.opacity)){
                    P=parseFloat(RegExp.$1)/100
                    }
                }
        }
}
return P
}
function O(ar,D){
    var P=ar.style;
    if(D!=null){
        P.display=D?"":"none"
        }
        return P.display!="none"
    }
    function f(P,ar){
    var D=j?P.clientX+document.body.scrollLeft:P.pageX;
    var at=j?P.clientY+document.body.scrollTop:P.pageY;
    if(ar){
        D-=ar.x;
        at-=ar.y
        }
        return{
        x:D,
        y:at
    }
}
function J(au){
    var D=0,at=0,ar=/^div$/i.test(au.tagName),av,P;
    if(ar&&au.scrollLeft){
        D=au.scrollLeft
        }
        if(ar&&au.scrollTop){
        at=au.scrollTop
        }
        av={
        x:au.offsetLeft-D,
        y:au.offsetTop-at
        };

    if(au.offsetParent){
        P=J(au.offsetParent);
        av.x+=P.x;
        av.y+=P.y
        }
        return av
    }
    function X(){
    var P=document.documentElement,D=document.body;
    return{
        x:P.scrollLeft||D.scrollLeft,
        y:P.scrollTop||D.scrollTop,
        w:P.clientWidth||window.innerWidth||D.clientWidth,
        h:P.clientHeight||window.innerHeight||D.clientHeight
        }
    }
function m(D,ar,P){
    for(P=0;P<D.length;++P){
        ar(D[P])
        }
    }
    var ad=new Function();
function W(D){
    if(typeof D=="string"){
        D=document.getElementById(D)
        }
        return D
    }
    return y
})();